perm filename EICHI.PAP[DOC,TOB] blob sn#155077 filedate 1975-04-17 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00005 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	.device xgp
C00003 00003	.begin center
C00010 00004	.begin center
C00016 00005	.begin center	
C00023 ENDMK
C⊗;
.device xgp
.require "BASKER.PUB[SUB,SYS]" source_file;
.select 1
.TURN ON "{", "↑", "↓", "[", "]", "&" ;
.TURN ON "↓_"

.begin center
DISPLAY GENERATED BY A GENERALIZED CONE REPRESENTATION
.end

Eiichi  Miyamoto:  Department of  Information  Engineering,  Hokkaido
University, Sapporo, Japan. 

Thomas  O.   Binford:  Artificial  Intelligence  Laboratory, Stanford
University, Stanford, Calif, 94305. 
.begin nofill


.end
.PAGE FRAME 56 HIGH 57 WIDE;
.NEXT PAGE
.begin center
↓_ABSTRACT_↓
.end

We  describe  the  generalized  cone  representation  and   its  data
structure  for  a  class  of three-dimensional  curved  objects,  and
describe  an  algorithm for  hidden  line elimination  for displaying
objects.   In  the  generalized  cone representation,  an  object  is
represented by a  sequence of disjoint slices called cross sections,
 normal  to a space curve
called the spine.   Accordingly,  an object is  displayed with  cross
section  edges and  longitudinal  edges which  connect  corresponding
points of two adjacent cross sections. 
Modelling by generalized cones simplifies input for
curved objects. 

 The program  first suppresses hidden lines within  a
segment of a part, between two adjacent cross sections.  Lines hidden
by other segments of parts are eliminated by a brute force comparison
of one segment versus every other segment. 
.begin nofill


.end
.begin center
↓_INTRODUCTION_↓
.end

We   require   that   a   representation   give   simple   part/whole
decompositions for familiar objects,  decompositions which correspond
to  our intuitive  sense of  parts.   Like  most representations,  the
Generalized Cone representation  is a part/whole  graph of an  object
structured  into parts  by  cutting  and pasting.  The  parts may  be
structured  into  subparts  to  any  depth.    The difference  between
representations is  the choice  of primitives and  the process  which
generates  descriptions of  objects within  the representation.   The
design criteria for generalized cone primitives are: a) parts  should
be defined by continuity; b) parts should correspond to our intuitive
notion  of parts; c)  parts which we  regard as similar  should have a
simple sense  of similarity  in the  representation; d)  relationships
which we regard  as significant for shape description,  such as thin,
should be explicit.  These criteria imply that primitives should be
volumes rather than surfaces.  Most people regard a block as a single
part, rather than as six surface parts.  That is, we don't segment at
surface discontinuity.   Further, parts should be generated  by local
volumes;   our  intuitive  segmentations   require  a   rich  set  of
primitives.  We  want the local  volumes to be  disjoint for our  own
convenience  in  visualizing.    Thus, we  seek  volume  primitives
defined by  continuity.  Generalized cone primitives are defined by a
sequence of thin slices normal to some space curve  called the spine.
The  slices can  be described  by a  continuous
function (whose value is a cross section) along  the  spine.    The  representation  is  based  on the
"generalized translational invariance" formalism.  In this formalism,
normal cross sections  are mapped into other normal cross sections by
translation followed by some congruence transformation.  For example,
a cylinder is defined by any plane figure translated along a straight
line.   A  cone is  defined by  any plane  figure translated  along a
straight line,  with a  scaling function  which is  linear along  the
line. 

The representation  of  cross sections  is the  same  problem in  two
dimensions.   The  representation of cross  sections is  a part/whole
representation, with area primitives (not curve primitives) connected
by cutting and pasting.  The primitives are formalized by generalized
translational  invariance in two dimensions, expressed  in terms of a
plane curve called the spine, and straight lines normal  to the spine
(cross sections of one-dimension). 

The representation  has been used  in scene analysis  for description
and  recognition   of   curved   objects  [1,2].      The
representation  best describes  parts with  cross  sections  which  change
smoothly along some space curve.  
.begin nofill


.end

.begin center
↓_DATA STRUCTURE FOR THE REPRESENTATION_↓
.end

In  the  program,  parts are  described  as  interpolation  functions
(splines)  for samples of cross  sections normal to the  spine.  Thus
parts are  represented as  sequences of  cross sections.   The  cross
sections are described in curve  form, as interpolation functions for
curve samples.  Cross sections may be circles or combinations of line
segments and  arcs.   That  representation for  cross sections  is an
expedient;  it  is inconsistent  with  the  representation for  cross
sections  described  above.    There  are  cross  section   edges  and
longitudinal  edges  which  tie  together   corresponding  points  of
adjacent cross  sections (see figure 1).  Although arcs  or curves are now displayed
as line segments, the display of longitudinal edges connecting points
on arcs may be suppressed, because these are artifacts. 

Each sample  point along a  cross section  is specified by  Cartesian
coordinates  in  the sense  of  a  right screw  in  the  direction of
generation of  the object  (in the  order of  cross  section).   This
ordering determines the interior of the object.  Each point lies on a
cross section edge and a longitudinal edge.  Each edge may be divided
into an arbitrary number of segments by hidden line elimination. 

Each object has its own  coordinate system and a relationship  to the
coordinate system of a parent  object or of the world.  Objects which
have the  same parent  are  called siblings.    There exists  a  tree
structure among objects. 

When  objects  are   displayed,  their  local  coordinates   must  be
transformed  into  world coordinates.    Let T↓i  be  the translation
vector and let R↓i be  the rotation matrix for transformation of  the
i↑[th] child  to world coordinates.   Then we can set  up the following
relations:
.begin nofill
    T↓i = T↓[i-1]+ R↓[i-1]t↓[i-1,i], 
    R↓i = R↓[i-1]r↓[i-1,i],
.end
where T↓0  is the zero vector and  where R↓0 is the unit matrix.
Here,   t↓[i-1,i]   =   (x↓[i-1,i],y↓[i-1,i],z↓[i-1,i])↑T    is   the
translation  vector from  the i↑[th]  child  coordinate frame  to its
parent's frame, and
.begin nofill
			i↓x  j↓x  k↓x
	r↓[i-1,i] =	  i↓y  j↓y  k↓y
			i↓z  j↓z  k↓z
.end
is the rotation matrix from the coordinate  frame of the i↑[th] child
to its  parent's frame.  The rotation  can be specified by a rotation
vector for which the  direction of the  vector specifies the axis  of
rotation  and the  magnitude of  the  vector specifies  the angle  of
rotation in radians.  Given such a rotation vector w↓x, w↓y, w↓z with
direction cosines c↓x, c↓y, c↓z and magnitude W in  radians.  Let c↓w
be cos(W)  and s↓w be sin(W).   Then the relation  between a rotation
matrix and a rotation vector [3] is as follows:
.begin nofill
 	i↓x = (1-c↓w)c↓xc↓y + c↓w
	j↓x = (1-c↓w)c↓xc↓y + c↓zs↓w
	k↓x = (1-c↓w)c↓xc↓z + c↓ys↓w
	i↓y = (1-c↓w)c↓yc↓x + c↓zs↓w
	j↓y = (1-c↓w)c↓yc↓y + c↓w
	k↓y = (1-c↓w)c↓yc↓z - c↓xs↓w
	i↓z = (1-c↓w)c↓zc↓x - c↓ys↓w
	j↓z = (1-c↓w)c↓zc↓y + c↓xs↓w
	k↓z = (1-c↓w)c↓zc↓z + c↓w  .
.end

The screen is chosen as the plane z =  0, and the observer is located
at  the point (0,0,c), in  the world coordinates, where  c>0.  Then a
point  (x,y,z)   in   world  coordinates   projects  to   the   point
(cx/(c-x),cy/(c-y)) on the screen. 
.next page
.begin center	
↓_HIDDEN LINE ELIMINATION_↓
.end

Let us define a piece as the volume between  a pair of adjacent cross
sections.  First,  lines within a piece are eliminated as follows.  A
surface is  visible  if the  normal to  the  surface has  a  positive
component  along the  ray to  the observer.   An  edge is  visible if
either  surface is  visible  at the  edge.   Because of  the sense  of
ordering of cross sections, the first cross section is visible if its
edges  have a clockwise  sense on  the screen,  and the  second cross
section is visible if its edges have a counterclockwise sense on  the
screen.  If the cross section is convex, the angle between successive
edges  will be less than  pi for clockwise image,  and greaer than pi
for  counterclockwise image.    However,  if  the  cross  section  is
nonconvex, the sum  of angles between successive edges will  be 2π if
clockwise and -2π if negative. 

A  longitudinal plane is  visible if  the angle from  a cross section
edge of  the first  cross section  to  the longitudinal  edge in  the
counterclockwise sense  is less than π.     At  concavities
in cross  sections, invisible  longitudinal  planes may  hide  planes
visible by  the  above condition  (figure 2).  That  portion of  the
partially  visible  plane  which  overlaps  the  invisible  plane  is
obscured.  The results for this stage are shown in figure 3 
for the example in figure 1.

The contour edges  of a piece are  those with one visible  surface at
the  edge.    At  concavities  in  the  cross  section,  portions  of
longitudinal edges are interior to  the contour of the piece  (figure
2). 

To eliminate edges  obscured by other pieces, each  piece is compared
with  every  other  piece.    Bounding  rectangles  aligned with  the
coordinate axes of the screen are calculated, and  those pieces whose
bounding rectangles  are disjoint are  immediately ignored.   For the
rest, for  each edge  on  the contour  of a  piece,  if there  is  an
apparent intersection with  edges of the  contour of the  other piece
(within  the line intervals), it  is determined which  line is nearer
the observer at the apparent intersection. 

In cases in which the projection of an object is entirely  within the
projection of another object, there is no intersection.  To determine
this  case, the  apparent intersections  of an  extended edge  of the
contour of one piece with  the contour of the other piece  are found.
If  two intersections are  found on  different sides  of the  line, a
hypothetical line is considered between the two intersections for the
larger piece, and it is decided which edge is nearer.  This fails for
some  nonconvex  pieces.    If  the  projections  of  the  pieces  are
disjoint, the two intersections fall on the same side of the line. 

After the decision of  which piece is  closer, every visible line  of
the further  piece is  checked to remove  the hidden  portion between
apparent  crossing points with  the contour of  the occluding piece.  
Figures 4 and 5 demonstrate complex objects after execution  of hidden line
elimination. 
.begin nofill


.end

.begin center
↓_CONCLUSION_↓
.end

The representation of an  object by disjoint slices is convenient for
use in  vision and  planning for  manipulation.   In this  case,  the
primary advantages are ease of input, display  of curved objects with
no artifact edges,  and compact data structure.  The program is being
extended  to   adequately  deal   with  hollow   objects  and   other
nonconvexities. 

References:

1) R.K.Nevatia,"Structured Descriptions of Complex Curved Objects for
Recognition and Visual Memory", Stanford Artificial Intelligence 
Laboratory Memo AIM-250, October 1974.

2) G.J.Agin,"Representation and Description of Curved Objects", Stanford
Artificial Intelligence Laboratory Memo AIM-173, October 1972.

3) Bruce  G. Baumgart;  "Geometric Modeling  for Computer
Vision";  Stanford Artificial Intelligence  Laboratory, Memo AIM-249,
Stanford University, October 1974.